home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-20 / rs0422.zip / LEVEL1 / DUMPRAM.AS < prev    next >
Text File  |  1989-12-28  |  3KB  |  133 lines

  1. ASYD    EQU    0DEh        ;SIO data port
  2. ASYC    EQU    0DFh        ;SIO control port
  3.  
  4.     psect    text,pure
  5. start:    DI            ;NO INTS EVER!!!
  6.     LD    HL,80F0h    ;Use the end of IPAGE for Stack
  7.     LD    SP,HL        ;DON'T USE MUCH!!!
  8.  
  9. ; Init SIO
  10.  
  11.     LD    HL,SIOAI    ;SIO init data pointer
  12.     LD    B,SIOAIL    ;Length of init data
  13.     LD    C,ASYC        ;SIO control port
  14.     OTIR            ;Init the SIO (rx mode)
  15.  
  16. AGAIN:    LD    HL,BANNER    ;Identify ourselves
  17.     CALL    PUTSTR        ;Print it!
  18.     CALL    GETCR        ;Wait for a CR
  19.  
  20.     LD    HL,8000h    ;Start dumping RAM at 8000h
  21. LOOP:    LD    A,H
  22.     OR    L        ;Are we done?
  23.     JP    Z,AGAIN        ;Yup, let them do it again...
  24.     CALL    INTEL        ;Output a single Intel Hex line
  25.     JP    LOOP
  26.  
  27. PUTCH:    IN    A,(ASYC)    ;RR0
  28.     AND    4        ;TBE?
  29.     JP    Z,PUTCH
  30.     LD    A,B
  31.     OUT    (ASYD),A
  32.     RET
  33.  
  34. PUTHEX:    LD    A,D
  35.     AND    0F0h        ;High Nibble First
  36.     SRL    A
  37.     SRL    A
  38.     SRL    A
  39.     SRL    A
  40.     ADD    A,30h
  41.     CP    3Ah        ;Greater than 9?
  42.     JP    M,HEX1
  43.     ADD    A,7        ;Yes, Make it a letter
  44. HEX1:    LD    B,A
  45.     CALL    PUTCH
  46.     LD    A,D
  47.     AND    0Fh        ;Low Nibble Next
  48.     ADD    A,30h
  49.     CP    3Ah        ;Greater than 9?
  50.     JP    M,HEX2
  51.     ADD    A,7        ;Yes, Make it a letter
  52. HEX2:    LD    B,A
  53.     CALL    PUTCH
  54.     RET
  55.  
  56. PUTSTR:    LD    A,(HL)        ;Get the next char
  57.     OR    A        ;NULL?
  58.     RET    Z
  59.     INC    HL        ;Advance to next byte
  60.     LD    B,A
  61.     CALL    PUTCH        ;Send it when we can
  62.     JP    PUTSTR
  63.  
  64. GETCR:    IN    A,(ASYC)    ;RR0
  65.     AND    1        ;RBF?
  66.     JP    Z,GETCR
  67.     IN    A,(ASYD)    ;Get the Character
  68.     AND    7Fh        ;Strip parity
  69.     CP    0Dh        ;Is it a CR?
  70.     RET    Z
  71.     LD    B,07h        ;NO, Bitch!
  72.     CALL    PUTCH
  73.     JP    GETCR
  74.  
  75. INTEL:    LD    A,32        ;Init checksum
  76.     ADD    A,H
  77.     ADD    A,L
  78.     LD    C,A        ;Save in right place
  79.     LD    B,3Ah        ;":"
  80.     CALL    PUTCH
  81.     LD    D,20h
  82.     CALL    PUTHEX
  83.     LD    D,H
  84.     CALL    PUTHEX
  85.     LD    D,L
  86.     CALL    PUTHEX
  87.     LD    D,00h        ;Record type 0 - Data
  88.     CALL    PUTHEX
  89. ILOOP:    LD    D,(HL)
  90.     INC    HL        ;Get next byte and Advance pointer
  91.     LD    A,C
  92.     ADD    A,D
  93.     LD    C,A        ;Update checksum
  94.     CALL    PUTHEX
  95.     LD    A,1Fh
  96.     AND    L        ;Are we done with this line?
  97.     JP    NZ,ILOOP    ;Nope, Keep going...
  98.     LD    A,C
  99.     NEG            ;2 Comp Checksum (in A)
  100.     LD    D,A
  101.     CALL    PUTHEX
  102.     LD    B,0Dh        ;CR
  103.     CALL    PUTCH
  104.     LD    B,0Ah        ;LF
  105.     CALL    PUTCH
  106.     RET
  107.  
  108.     psect    data
  109. BANNER:    defb    0dh,0ah
  110.     defm    'ROSE X.25 Packet Switch RAM Dump Utility '
  111.     defm    'by Thomas A. Moulton, W2VY'
  112.     defb    0dh,0ah,0dh,0ah
  113.     defm    'There is NO flow control of any kind!'
  114.     defb    0dh,0ah
  115.     defm    'You may need to use 4800 baud or less.'
  116.     defb    0dh,0ah
  117.     defm    'Open ASCII Capture file and hit RETURN when ready.'
  118.     defb    0dh,0ah,0dh,0ah,0
  119.  
  120. ;  SIO ASYNC initialization block.
  121.  
  122. SIOAI:    DEFB    18H        ;Reset SIO
  123.     DEFB    14h        ;WR 4 + Reset Ext Intr
  124.     DEFB    44H        ;16xClk + 1Stop
  125.     DEFB    3        ;WR 3
  126.     DEFB    0C1H        ;8bit + RxEnable
  127.     DEFB    5        ;WR 5
  128.     DEFB    0EAH        ;DTR ON + 8bit + TxEnable + RTS On
  129.     DEFB    11h        ;WR 1 + Reset Ext intr
  130.     DEFB    0         ;Disbale all ints
  131. SIOAIL    EQU    $-SIOAI
  132.  
  133.